package unmsm.fisi.tesis.servicio;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;


import unmsm.fisi.tesis.dao.HistoriaClinicaDAO;
import unmsm.fisi.tesis.util.Ordenar;
import unmsm.fisi.tesis.util.Entidad;
import unmsm.fisi.tesis.vo.EnfermedadVO;
import unmsm.fisi.tesis.vo.ExamenVO;

public class HistoriaClinicaServicio {
	
	private HistoriaClinicaDAO historiaClinicaDAO;
	
	public HistoriaClinicaServicio(){
		
		historiaClinicaDAO = new HistoriaClinicaDAO();
	}
	
	
	public void ingresarDatos(ExamenVO examenVO,String tipoIngreso){
		
		historiaClinicaDAO.ingresarDatos(examenVO, tipoIngreso);
	}
	
	public Entidad comparar(int[][] conocimiento,String resultado, String posicionesReglasAcertadas, int[][] evaluacionPaciente){
		
		String[] arrayResultado= resultado.split("/");
		int numeroColumnas = conocimiento[0].length;
		int numeroFilas = conocimiento.length;
		int contadorCoincidencias;
				
		String[] arrayPosicionesReglasAcertadas = posicionesReglasAcertadas.split("-");
		arrayPosicionesReglasAcertadas = arrayPosicionesReglasAcertadas[1].split("/");

		Ordenar ordenar = new Ordenar();
		
		//TreeSet<Double> tp= new TreeSet<Double>(a);
		TreeSet<Entidad> map= new TreeSet<Entidad>(ordenar);
		for(String pos:arrayPosicionesReglasAcertadas){
			
			contadorCoincidencias=0;
			for(int j=0; j< numeroFilas ; j++){
				
				if( !pos.trim().equals("") &&  conocimiento[j][Integer.parseInt(pos)]==evaluacionPaciente[j][0] ){
					contadorCoincidencias++;
				}
				
			}
			
			double porcentaje= contadorCoincidencias*100/numeroFilas;
			
			if( !pos.trim().equals("") )
				map.add(new Entidad(Integer.parseInt(pos), porcentaje));
			
		}

		System.out.print(map);
		System.out.print(map.first());
		
		return map.first();
		
		
		
		
	}
	
	
	public List<EnfermedadVO> obtenerDetalleEnfermedades(){
		
		return historiaClinicaDAO.obtenerDetalleEnfermedades();
	}
	public List<EnfermedadVO> obtenerDetalleEnfermedades(int idHistoria){
		
		return historiaClinicaDAO.obtenerDetalleEnfermedades(idHistoria);
	}

}
